package com.fiap.to;

import java.io.Serializable;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.PrePersist;
import javax.persistence.Table;

import org.hibernate.annotations.GenericGenerator;

import com.fiap.enums.TipoTelefoneENUM;

@Entity
@Table(name = "AM_TELEFONE")
public class TelefoneTO implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Id
	@GenericGenerator(name = "seq_telefone", strategy = "increment")
	@GeneratedValue(generator = "seq_telefone")
	@Column(name = "ID_TELEFONE")
	private int id_telefone;
	@Column(length = 1, nullable = false)
	private TipoTelefoneENUM tipo;
	@Column(length = 30)
	private String responsavel;
	@Column(length = 200)
	private String observacoes;
	@ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.EAGER)
	@JoinColumn(name = "ID_PESSOA")
	private PessoaTO pessoa;

	@PrePersist
	private void executaAntesDePersistir() {
		System.out.println("Persistindo...");
	}

	public TelefoneTO() {
		super();
		// TODO Auto-generated constructor stub
	}

	public TelefoneTO(int id_telefone, TipoTelefoneENUM tipo,
			String responsavel, String observacoes, PessoaTO pessoa) {
		super();
		this.id_telefone = id_telefone;
		this.tipo = tipo;
		this.responsavel = responsavel;
		this.observacoes = observacoes;
		this.pessoa = pessoa;
	}

	public int getId_telefone() {
		return id_telefone;
	}

	public void setId_telefone(int id_telefone) {
		this.id_telefone = id_telefone;
	}

	public TipoTelefoneENUM getTipo() {
		return tipo;
	}

	public void setTipo(TipoTelefoneENUM tipo) {
		this.tipo = tipo;
	}

	public String getResponsavel() {
		return responsavel;
	}

	public void setResponsavel(String responsavel) {
		this.responsavel = responsavel;
	}

	public String getObservacoes() {
		return observacoes;
	}

	public void setObservacoes(String observacoes) {
		this.observacoes = observacoes;
	}

	public PessoaTO getPessoa() {
		return pessoa;
	}

	public void setPessoa(PessoaTO pessoa) {
		this.pessoa = pessoa;
	}

}
